﻿<?php

/*
 *Condições do teste:
 *
 * No início do teste:
 * - insere o email lucimar@gmail.com no banco, para comparação e informar que ja existe;
 *
 * No Final:
 * - remove o usuário que lucimar@gmail.com e lucimar1@gmail.com, esse último tendo sido
 * o caso de cadastro com sucesso no sistema.
 *
*/

require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
require_once 'Conexao.php';

class TesteCadastroSistema extends PHPUnit_Extensions_SeleniumTestCase {
    
    protected $receivedCon;
    protected $result;
    protected $insercaoBD = "INSERT INTO usuario(email, senha_salgada, sal, nome, bolitos, ativo)
            VALUES('lucimar@gmail.com', 'iu54h6466456uy56g67u98g80g.', '123456', 'lucimar', 100, 0)";
    protected $remocaoBD = "DELETE FROM usuario
            WHERE email='lucimar@gmail.com' or email='lucimar1@gmail.com'";

    protected function setUp() {
        $this->receivedCon = new Conexao();
        $this->receivedCon->conect();
        echo "conexao bem sucedida.\n";

        $this->result = $this->receivedCon->query($this->insercaoBD);
        echo "Operacao no banco de dados bem sucedida.\n";

        //$this->receivedCon->limpar_memoria($this->result);
        //echo "Memória limpa com sucesso.\n";

        $this->setBrowser("*firefox");
        $this->setBrowserUrl("http://localhost");
    }


    protected function tearDown() {

        $this->receivedCon->query($this->remocaoBD);
        echo "Banco deletado com sucesso.\n";
        $this->receivedCon->close();
        echo "Conexao finalizada com sucesso.\n\n";
        
    }

    public function testCamposEmBranco() {
        $this->open("http://localhost");
        $this->click("link=Cadastro");
        $this->waitForPageToLoad("30000");
        $this->click("submit");
        $this->waitForPageToLoad("30000");
        try {
            $this->verifyTextPresent($this->isTextPresent("O valor é obrigatório e não pode estar vazio"));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());            
        }
    }
    
    public function testTamanhoExcedido() {
        $this->open("http://localhost");
        $this->click("link=Cadastro");
        $this->waitForPageToLoad("30000");
        $this->type("nome", "lucimarleandrolucimarleandrolucimarleandrolucimarleandrolucimarleandrolucimarleandrolucimarleandrolucimarleandro");
        $this->type("email", "asdas");
        $this->click("submit");
        $this->waitForPageToLoad("30000");
        try {
            $this->verifyTextPresent($this->isTextPresent("O tamanho de"));
            $this->verifyTextPresent($this->isTextPresent("é superior a"));
            $this->verifyTextPresent($this->isTextPresent("caracteres"));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());            
        }
    }

    public function testEmailInvalido() {
        $this->open("http://localhost");
        $this->click("link=Cadastro");
        $this->waitForPageToLoad("30000");
        $this->type("nome", "asd");
        $this->type("email", "asdaf@");
        $this->click("submit");
        $this->waitForPageToLoad("30000");
        try {
            $this->verifyTextPresent($this->isTextPresent("não parece ser um endereço de e-mail válido."));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());            
        }
    }  
    
    public function testEmailCadastrado() {
        $this->open("http://localhost");
        $this->click("link=Cadastro");
        $this->waitForPageToLoad("30000");
        $this->type("nome", "Lucimar");
        $this->type("email", "lucimar@gmail.com");
        $this->click("submit");
        //$this->waitForPageToLoad("30000");
        try {
            $this->verifyTextPresent($this->isTextPresent("e-mail já cadastrado!"));            
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());            
        }
    }
     
    public function testSucessoCadastro() {
        $this->open("http://localhost");
        $this->click("link=Cadastro");
        $this->waitForPageToLoad("30000");
        $this->type("nome", "Lucimar");
        $this->type("email", "lucimar1@gmail.com");
        $this->click("submit");
        //$this->waitForPageToLoad("30000");
        try {
            $this->verifyTextPresent($this->isTextPresent("Parabéns, seu cadastro foi solicitado com sucesso."));
            //$this->assertTrue($this->isTextPresent("Parabéns, seu cadastro foi solicitado com sucesso."));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());           
        }
    }
}

?>